“Part programs” are programs in a machine language that are generated by CAM systems. CAM systems are the interface between the Computer-Aided Design (CAD) design, i.e., the geometric design of a part, and the CNC machine specifications. The first CNC controllers used a standard machine code called EIA/ISO 6983, i.e., a G- and M-code program. This standard is still widely used today. However, there are a number of weaknesses in this standard. First, it is essentially a description of a tool trajectory in terms of lines (G01), circles (G02 and G03), and rapid traverse displacements (G00). For complex parts, e.g., three-dimensional (3D) parts, there may be a need to discretize and approximate a spline curve with small G01 lines, which are then re-assembled by the CNC to form a new spline curve. Second, there are problems of accuracy due to the fact that the coordinates must be written down in a text file. Third, the CNC Operator alters the speeds and feeds to his or her convenience in a way that is inherently unknown to the CAM system, which may cause inefficiencies.
Many efforts have been made to cope with these problems. A new standard, 14649 STEP-NC (STEP-NC), was created with the intention of replacing the old standard: EIA/ISO 6983. The goal of STEP-NC is to be an extensive description of the toolpath in a machine independent form, including tolerances, such that the toolpath can still be changed and measured on the CNC. However, this is quite impossible, because a toolpath is in principle a “tool motion.” Therefore, the toolpath is always linked with the machine geometry and the physical limits of the machine. The ISO standard, i.e., G- and M-codes, is merely coordinates and feedrates, whereas the STEP standard has as basic strategy in the cutter file that allows the operator to specify the geometry and the desired precision. However, it is still up to the CNC, i.e., a STEP CNC, to translate this information into cutter speeds and feeds. The STEP approach does not consider that a toolpath is not merely a geometry, but also a tool path, i.e., a tool that moves along a path. All machines have certain areas or directions where the toolpath may be difficult, and one cannot generate a toolpath independently from a machine.
Another effort to solve these problems is by directly calculating the servo controller commands in the CAM system by bridging the interface between the CAM computer and the CNC controller. However, this solution is not optimal, as it is impossible to change the speeds, i.e., the CNC override function, on the CNC. The authors and/or inventors of this approach argue that the operators should not change the speed on the machine anymore. However, a static speed is not practicable due to how parts are machined. In the ISO standard, the feedrate is specified by the F-command, and is ideally sourced from a cutting database containing verified speeds for a certain material class and a corresponding tool. When new materials are used, the speeds must be changed. Additionally, for certain curvatures, the speed should be adapted. Depending on the CNC machine being used, the dynamics of the CNC machine may not allow for the feedrates specified in the cutting database for the curvature to be machined. For these reasons, every part should ideally be first executed at a low speed. Then, in small increments, the speed may be increased in function based on the experience of the operator. In some cases, e.g., large volumes being produced, the part may be optimized more than any existing CAM system, and speeds higher than 100% may be tested. Small cutting problems may even be optimized via the operator changing the speeds and the cutting conditions on the machine.
Another effort to solve these problems is by verifying the machining part program in the CAM system before sending it to the CNC machine. Other variations offer a simulation of the CNC Software off-line. The disadvantage of this approach is that because there are so many CNC parameters to be set, that one may never be sure if the simulation is truly identical to the CNC system on the machine. Therefore, a verified off-line simulation may still cause problems when executed on a CNC machine.
Finally, efforts to solve these problems have involved putting the CAM software on the same processing unit as the CNC. In some versions, both units may run on the same processor. Some have proposed reading a CAD-file by a CAD-interpreter that is located on the CNC processor. This interpreter would then generate a Motion-Object, i.e., a file that contains both toolpath and tool trajectory information. This is an improvement on the EIA/ISO 6983 code interface, but it does not address nor solve the unpredictable behavior of a CNC against the programmed toolpath.